/**   
 * @ClassName: IMenuMapper.java 
 * @Package com.vrv.menu.dao 
 * @author LQ   
 * @date 2017年3月12日 下午4:57:35 
 * @version V1.0
 */
package com.vrv.menu.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.vrv.common.dao.IBaseMapper;
import com.vrv.menu.model.Menu;

/** 
 * MenuDao:菜单dao接口
 * @author LQ 
 */
public interface MenuDao extends IBaseMapper<Menu, Integer> {
    
    /**
     * 菜单集合
     * @param params 查询条件参数
     * @return List<Menu> 菜单集合
     */
    List<Menu> list(Map<String, Object> params);
    
    /**
     * 根据父菜单查询子菜单
     * @param parentCode 父项编码
     * @return List<Menu> 菜单集合
     */
    List<Menu> queryMenuByParentCodeList(Integer parentCode);
    
    /**
     * 根据菜单编号查询菜单实体
     * @param menuCode 菜单编号
     * @return Menu 菜单实体
     */
    Menu getMenuByCode(Integer menuCode);
    
    
    /**
     * 根据菜单编号获取子菜单数量
     * @param menuCode 菜单编号
     * @return Integer 子菜单数量
     */
    Integer getChildrenTotal(Integer menuCode);
    
    /**
     * 根据treepath更新菜单级别
     * @param menuLevel 级别差
     * @param treePath 树形结构路径
     */
    void updateLevel(@Param("menuLevel")Integer menuLevel,@Param("treePath")String treePath);
    
    /**
     * 根据原有的treepath更新作为条件，将原有的treepath替换成现在的treepath
     * @param nowTreePath 新的treepath
     * @param originalTreePath 原有的treepath
     */
    void updateTreePath(@Param("nowTreePath")String nowTreePath,@Param("originalTreePath")String originalTreePath);
    
    /**
     * 根据treePath删除
     * @param treePath 树形结构路径
     */
    void delete(@Param("treePath")String treePath);
    
    /**
     * 根据编号删除
     * @param menuCode 菜单编号
     */
    void deleteByCode(Integer menuCode);
}
